1. Field of the Invention
This invention relates generally to a method, adopted in the situation where communication between a storage system having a plurality of I/O ports that can be connected to a network and a host computer connected to the storage system via the network, or communication between storage systems, is carried out using iSCSI protocol, for shortening the time for the host computer to check a plurality of logical units in the storage system or for a storage system to check a plurality of logical units in another storage system.
2. Description of Related Art
iSCSI (internet SCSI) is a protocol used for carrying out SCSI (Small Computer System Interface) communications on a TCP/IP (Transmission Control Protocol/Internet Protocol) network.
With iSCSI, commands and data are transmitted in units of iSCSI PDUs (Protocol Data Units). A PDU—a unit of data handled by a communication protocol—is a packet in TCP/IP or a frame in Ethernet (registered trademark). With ISCSI, a read command is called a Read Command PDU and the data sent in response to the read command is called a Data-In PDU. Incidentally, an iSCSI PDU is transmitted in the form of being packed in a TCP/IP packet in the network. In other words, Read Command PDUs and Data-In PDUs are transmitted substantially as TCP/IP packets.
With ISCSI, an initiator issues, in addition to read commands and write commands, an Inquiry PDU—a command to check logical unit(s) (LUs) in a target—and the target sends back a Data-In PDU as a reply. In iSCSI communication, if an initiator issues a check-requesting SCSI command after it receives a response for a previously issued check-requesting SCSI command, the check results, i.e., Data-In PDUs, from the targets are often sent together in one TCP/IP packet.
For the purpose of reducing network loads, TCP use the delayed acknowledgement (‘delayed ACK’) for delaying an acknowledgement for a received packet. With this delayed ACK, an acknowledgment is delayed by 0.5 seconds or less or until two packets are received (Non-patent document RFC1122, paragraph 4.2.5). As mentioned above, because the check results—Data-In PUDs—are sent in one TCP/IP packet, a host computer sends an acknowledgment to a storage system after a maximum of 0.5 seconds based on the delayed ACK. Because there is no communication established between the host computer and the storage system during that 0.5 seconds, the host computer issues Inquiry commands to the storage system having many LUs based on the delayed ACK, which causes a problem that the command response time as well as the check time increase.
For example, as shown in FIG. 2, in the situation where an initiator is a host computer 106 and a target is a storage system 101 or the initiator is the storage system 101 and the target is another storage system 101, when the initiator intends to check the LUs in the target, it repeats processing composed of the steps of: issuing a check command 202a—an SCSI Inquiry LUN#a—to the target; when receiving a check result 203a—an SCSI Data-In—from the target as a response to the check command, sending an acknowledgement (ACK) 205a to the target after a maximum of 0.5 second, which corresponds to waiting for two segments, based on the delayed ACK; and, when receiving an SCSI Inquiry Response 206a from the target as a response to the delayed ACK, sending an acknowledgement (ACK) 207a to the target after a maximum of 0.5 seconds, which corresponds to waiting for two segments, based on the delayed ACK. Consequently, the command reply time increases; in other words, the check time increases due to the delayed ACK.
This problem may be solved by disabling the delayed ACK; however, as delayed ACK is employed in many kinds of equipment and operating systems, disabling the delayed ACK function may badly influence the applications that run on that equipment and those operating systems. One method for avoiding the influence of delayed ACK has been suggested in the Japanese Patent Laid-Open Application Publication No. 2005-174097.
This publication describes that, after required commands are sent to peripheral devices that have delayed ACK, an ‘any command’ is sent to the peripheral device to avoid the effect of the delayed ACK. To be precise, the number of commands sent to the peripheral devices is counted and when the number reaches a predetermined number, an ‘any command’ is sent.
However, there are cases where, depending on the connection environment between the peripheral devices, the ‘any command’ reaches the peripheral devices after an acknowledgement delayed due to the delayed ACK does. In these cases, there is a problem in that the effect of the delayed ACK is fully active. This problem often occurs because TCP/IP is based on best-effort communication. Moreover, that ‘any command’ ends up in continuously running around on the connection line as unnecessary data. In other words, when an initiator checks a plurality of LUs in a storage system by means of iSCSI communication, the check time increases due to the delayed ACK employed in the TCP in the initiator.
This invention aims to prevent the increase in check time caused by the delayed ACK employed in an initiator's TCP when the initiator checks LUs in a target.